package br.com.alinesoftware.app.facade.cliente;

import javax.inject.Inject;

import br.com.alinesoftware.app.entity.Cidade;
import br.com.alinesoftware.app.entity.Endereco;
import br.com.alinesoftware.app.entity.Estado;
import br.com.alinesoftware.app.entity.Proprietario;
import br.com.alinesoftware.app.entity.Telefone;

import com.powerlogic.jcompany.commons.PlcException;
import com.powerlogic.jcompany.commons.config.qualifiers.QPlcDefault;
import com.powerlogic.jcompany.commons.config.stereotypes.SPlcFacade;
import com.powerlogic.jcompany.model.util.PlcIocModelUtil;

/**
 * Classe de Fachada gerada pelo assistente
 */
@SPlcFacade
public class ClienteFacadeImpl implements IClienteFacade {

	@Inject @QPlcDefault 
	private PlcIocModelUtil iocModeloUtil;

	public Proprietario retriveProprietarioById(Long id) throws PlcException {

		Proprietario proprietario = (Proprietario) iocModeloUtil.getPersistenceObject(Proprietario.class).findById(Proprietario.class, id);
		proprietario.setTelefone(retrieTelefoneById(proprietario.getTelefone().getId()));
		return proprietario;
	}

	public Telefone retrieTelefoneById(Long id) throws PlcException {
		return (Telefone) iocModeloUtil.getPersistenceObject(Telefone.class).findById(Telefone.class, id);
	}

	public Endereco retriveEnderecoById(Long id) throws PlcException {
		return (Endereco) iocModeloUtil.getPersistenceObject(Endereco.class).findById(Endereco.class, id);
	}

	public Cidade retriveCidadeById(Long id) throws PlcException {
		return (Cidade) iocModeloUtil.getPersistenceObject(Cidade.class).findById(Cidade.class, id);
	}

	public Estado retriveEstadoById(Long id) throws PlcException {
		return (Estado) iocModeloUtil.getPersistenceObject(Estado.class).findById(Estado.class, id);
	}
	
}
